import router from '@/router'
//@ts-ignore
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import useUserStore from '@/store/modules/user'
import pinia from './store'
import setting from './setting'
let userStore = useUserStore(pinia) // TODO:  此处引入小仓库  需传入大仓库 此处需深入
nprogress.configure({ showSpinner: false }) // 不显示 loading

router.beforeEach(async (to: any, from: any, next: any) => {
  document.title = `${setting.title} - ${to.meta.title}` // 网页 title 设置
  // to: 要跳转的目标路由
  // from：原路由
  // next: 路由跳转通行方法
  nprogress.start()
  if (userStore.token) {
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      if (useUserStore.username) {
        next()
      } else {
        try {
          await userStore.getUserinfo()
          next()
        } catch {
          // token 过期
          // token 被修改  错误 token  需重新回到登录页
          await userStore.logout()
          next({ path: '/login', query: { redirect: to.path } })
        }
      }
    }
  } else {
    if (to.path === '/login') {
      next()
    } else {
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})

router.afterEach((to: any, from: any) => {
  nprogress.done()
})

// 路由结构分析
// 登录|404|任意路由|home|数据大屏|权限管理（用户、菜单、角色）|商品管理（商品|属性|SKU|SPU）
// 是否有 token
// 是否有 个人信息（多处需要用到）此处做获取
